#include <iostream>

// 函数模板的基本语法：
// template <typename T>
// 返回类型 函数名(参数列表)
// {
//     函数体
// }

void swapInt(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}

void swapDouble(double &a, double &b)
{
    double temp = a;
    a = b;
    b = temp;
}

template <typename T>
void Myswap(T &a, T &b)
{
    T temp = a;
    a = b;
    b = temp;
}

void test01()
{
    int a = 10;
    int b = 20;
    // 两种方式调用函数模板
    // 1. 自动类型推导
    // Myswap(a, b);
    // 2. 显示指定类型
    Myswap<int>(a, b);

    std::cout << "a = " << a << std::endl;
    std::cout << "b = " << b << std::endl;
}

int main()
{
    test01();
    return 0;
}